/*
 * Copyright (C) 2006-2015
 * 版权所有者为北京捷越联合信息咨询有限公司。本系统是商用软件,未经授权擅自复制或传播本程序的部分或全部将是非法的。
 * @title: BuyBackDao.java
 * @package com.jy.modules.cims.data.dao.tbj
 * @author final
 * @date 2016-8-18 下午5:55:10
 * @version v1.00
 * @description: TODO(用一句话描述该文件做什么)
 */

package com.jy.modules.cims.data.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.jy.modules.cims.data.common.dto.TCMmCostParamDTO;
import com.jy.modules.cims.data.common.dto.TCMmCreditDealDetailDTO;
import com.jy.modules.cims.data.common.dto.TCMmCreditDetailDTO;
import com.jy.modules.cims.data.common.dto.TCMmRaisePlanDTO;
import com.jy.modules.cims.data.dto.CreditDetailDto;
import com.jy.platform.core.mybatis.MyBatisRepository;

/**
 * @classname: BuyBackDao
 * @description: 贷款回购DAO
 */
@MyBatisRepository
public interface BuyBackDao {


    /**
     * @description: 分页查询债权明细
     * @param searchParams
     * @return
     */
    public List<TCMmCreditDetailDTO> searchBuyBackDetailByPaging(Map<String, Object> searchParams) ;
    

    /**
     * @description: 不分页查询债权明细
     * @param searchParams
     * @return
     */
    public List<TCMmCreditDetailDTO> searchBuyBackDetail(Map<String, Object> searchParams) ;
    
    /**
     * 更新债权明细表的选择状态
     */
    public void updateCreditChooseStatus(Map<String, Object> map);
    
    /**
     * 根据交易流水号、债权来源、核心债权状态查询交易流水明细信息
     * @Title getDealDetailByCreditInfo
     * @param paramMap 
     * void 
     * @author yanjingying
     * @date 2015-12-22-上午11:17:56
     * @update 
     * @throws
     * */
    public List<TCMmCreditDealDetailDTO> getBuyBackContractList(Map<String, Object> paramMap);
    
    
   /**
    * 根据交易流水号、债权来源、核心债权状态查询匹债权金额
    * @param paramMap
    * @return
    */
   public BigDecimal getBuyBackMatchAmt(Map<String, Object> paramMap);    
   
   
   /**
    *  根据包名获取贷款回购批次之外的债权条数
    * @param paramMap
    * @return
    */
   public int getPackCreditNum(Map<String, Object> paramMap);    
   
   /**
    *  根据批次号获取二次购买包后缀
    * @param paramMap
    * @return
    */
   public String getSecondPackSuffix(Map<String, Object> paramMap);    
   
   
   /**
    * 根据包名得到债权 
    * @param searchParams
    * @return
    */
   public List<TCMmCreditDetailDTO> searchCreditDetail(Map<String,Object> searchParams);
   
   /**
    * 更新债权明细表的赎回状态（全部赎回）
    */
   public void updateWholeBackCredit(Map<String, Object> map);
   
   /**
    * 更新债权明细表的赎回状态(部分赎回)
    */
   public void updatePartBackCredit(Map<String, Object> map);
   

   /**
    * 根据流水号得到债权 
    * @param searchParams
    * @return
    */
   public List<CreditDetailDto> getBuyBackDetailListByBatchIdByPaging(Map<String,Object> searchParams);
   
   
   /**
    * 更新关系表（回购价格、本息和）
    */
   public void updateRefBuyBack(Map<String, Object> map);
   
	/**
	 * 得到结算计划中返现总金额
	 * @param map
	 * @return
	 */
   public BigDecimal getReturnAmt(Map<String, Object> map);
   
	/**
	 * 得到月还方式
	 * @param map
	 * @return
	 */
  public String getRepayType(Map<String, Object> map);
   
  /**
   * 得到募集计划
   * @param map
   * @return
   */
  public List<TCMmRaisePlanDTO> getPlan(Map<String, Object> map);
  
  /**
   * 得到募集计划对应的费率
   * @param map
   * @return
   */
  public List<TCMmCostParamDTO> getFee(Map<String, Object> map);
  
  /**
   * 更新批次表的回购价格
   * @param map
   */
  public void updateBatchBuyBack(@Param(value="batchId") String batchId);
  
  /**
   * 查询匹配的债权信息
   * @param searchParams
   * @return
   */
  public List<CreditDetailDto> getMatchCreditListByPaging(Map<String,Object> searchParams);
  
}
